# 第一阶段：克隆代码
FROM alpine:latest AS git-clone
WORKDIR /app
#
## 更换国内镜像源（阿里云）
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安装 git（带缓存优化）
RUN apk add --no-cache git

RUN git config --global user.name 'hanchaoqi'
RUN git config --global user.email '10890947+hanchaoqi@user.noreply.gitee.com'

# 从 Git 取代码（支持 SSH 认证）
ARG GIT_REPO_URL=https://gitee.com/hanchaoqi/miniprogress.git
ARG GIT_COMMIT=master

ARG CACHEBUST=1

RUN git clone ${GIT_REPO_URL} && \
    cd ./miniprogress && \
    git checkout ${GIT_COMMIT} && \
    git pull

RUN echo ${CONFIG_PATH}


# 第二阶段：编译代码
FROM golang:1.21 AS builder
WORKDIR /build


ARG CACHEBUST=1
COPY --from=git-clone /app/miniprogress /build

ENV GOPROXY=https://goproxy.cn,direct
ENV GOSUMDB=sum.golang.org

RUN go mod tidy

RUN go mod vendor

RUN CGO_ENABLED=0 GOOS=linux go build -o app-server


# 第三阶段：集成 LibreOffice
FROM alpine:latest AS runtime-base
# 安装 LibreOffice 及其依赖
# 添加 community 仓库

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安装 Java 和 LibreOffice
RUN apk add --no-cache \
    openjdk11 \
    libreoffice \
    ttf-dejavu \
    cups-libs \
    fontconfig \
    harfbuzz \
    libxext \
    libxrender \
    && rm -rf /var/cache/apk/*

# 配置 Java 环境
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk
ENV PATH="$JAVA_HOME/bin:$PATH"

# 创建符号链接
RUN ln -sf $JAVA_HOME/bin/java /usr/bin/java


# 第四阶段：运行时镜像
FROM runtime-base
WORKDIR /runtime

# 更新包索引并安装 musl-locales
RUN apk update && \
    apk add --no-cache musl-locales musl-locales-lang

# 设置环境变量为简体中文 UTF-8
ENV LANG=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8

# 验证区域设置
RUN locale

# 安装其他必要的软件包（例如 grep）
RUN apk add --no-cache grep

ARG CACHEBUST=1
RUN mkdir /runtime/src
COPY --from=git-clone /app/miniprogress /runtime/src
COPY --from=builder /build/app-server .
CMD ["/runtime/app-server"]